package com.liangtian.mdm.system.organization.service;

import com.liangtian.mdm.system.organization.model.SysOrganization;
import com.github.pagehelper.PageInfo;

import java.util.List;
import java.util.Map;

/**
 * <p>Encoding    :  UTF-8</p>
 * <p>Package Name: com.liangtian.mdm.system.service </p>
 * <p>Project Name: chccig </p>
 * <p>Copyright   :  Copyright(c) 2016 石化盈科信息技术有限责任公司 </p>
 * <p>Created Time: 2016-04-25 14:16</p>
 * <p>Description :        </p>
 *
 * @author : wangyq
 * @version :  1.0
 */
public interface SysOrganizationService {

    /**
     * @param params
     * @return 组织机构页面对象
     * @desc 根据组织机构父id获取所有的子机构，如果父id为空，查询所有的组织机构
     */
    PageInfo queryAllOrganizationList(Map<String, Object> params);

    /**
     * @param params
     * @return 返回符合条件的组织结构列表
     * @desc 根据条件获取全部的组织机构信息
     */
    List<Map<String, Object>> queryOrganizationList(Map<String, Object> params);

    /**
     * @param sysOrganization
     * @return 受影响的行数
     * @des 新增organization
     */
    int insertOrganization(SysOrganization sysOrganization);

    /**
     * @param sysOrganization 对象
     * @return 受影响的行数
     * @desc 编辑 （编辑数据；启用-1；禁用-0）
     */
    int updateOrganization(SysOrganization sysOrganization);

    /**
     * @param params ids
     * @return 受影响的行数
     * @desc 批量删除
     */
    int batchDeleteOrganization(Map<String, Object> params);

    /**
     * @param params
     * @return 查询到的树形组织机构
     * @desc 查询树状结构组织机构
     */
    List<Map<String, Object>> queryOrganizationMapListForTree(Map<String, Object> params);

    /**
     * 查询子组织机构
     *
     * @param params
     * @return
     */
    List<SysOrganization> querySubOrganizationMapList(Map<String, Object> params);

    /**
     * @param params
     * @return 受影响的行数
     * @desc 编辑组织机构状态
     */
    int editOrganizationStatus(Map<String, Object> params);

    /**
     * @param params
     * @return 单个机构对象
     * @desc 根据id查询机构对象
     */
    Map<String, Object> queryOrganizationById(Map<String, Object> params);

    /**
     * @param params
     * @return 相同的机构名称个数
     * @desc 查询是否有相同的机构名称
     */
    int querySameOrganizationNameCounts(Map<String, Object> params);

    /**
     * @param params
     * @return 全部启用状态下的权限树
     * @desc 获取机构关联权限树
     */
    List<Map<String, Object>> queryPermissionMapListForTree(Map<String, Object> params);

    /**
     * @param sysOrganization 对象
     * @return 受影响的行数
     * @desc 编辑权限
     */
    int updateOrganizationPermission(SysOrganization sysOrganization, Long[] ids);

    /**
     * * <p>Title: 根据属性id查询属性是否存在</p>
     * <p>Description: TODO </p>
     * <p>Company:@param orgId
     * <p>Company:@return </p>
     *
     * @author : xiaoliu
     * @date :2016年10月27日下午3:32:32
     */
    List<SysOrganization> queryOrgByName(String orgName);
}
